from Grafo import Grafo
import csv
from sys import argv

if __name__ == "__main__":
    try:
        print("DEBUG: Usando arquivo {}".format(argv[1]))
        grafo = Grafo(csv.reader(open(argv[1]), delimiter=";"))
    except IndexError:
        print("DEBUG: Usando arquivo padrão (entrada.csv)")
        grafo = Grafo(csv.reader(open("entrada.csv"), delimiter=";"))
    grafo.calculaTemposEarliest()
    grafo.calculaTemposLatest()
    grafo.calculaCaminhoCritico()

    print ("{:<14} {:<14} {:<14} {:<14} {:<14} {:<14} {:<14} ".format('Tarefa','Duração','EarliestStart','EarliestEnd', 'LatestStart', 'LatestEnd', 'Folga'))
    for no in grafo.showNodes():
        print("{:<14} {:<14} {:<14} {:<14} {:<14} {:<14} {:<14}".format(no.getIndice(), no.getDuracao(), no.getInicioCedo(), no.getFimCedo(), no.getInicioTardio(), no.getFimTardio(), no.getFolga()))
    
    print("OBS. Geralmente, tarefas paralelas possuem o mesmo earliestStart.\n\nCaminho crítico: ", end='Início -> ')
    for cc in grafo.getCaminhoCritico():
        print(cc.getIndice(), end=' -> ')
    print("fim\n")